package com.br.fsm.projectdelivery.controlador;

import java.util.ArrayList;

import com.br.fsm.projectdelivery.basica.Produto;
import com.br.fsm.projectdelivery.excecao.ControladorException;
import com.br.fsm.projectdelivery.excecao.RepositorioException;
import com.br.fsm.projectdelivery.repositorio.IRepositorioProduto;
import com.br.fsm.projectdelivery.repositorio.RepositorioProduto;

public class ControladorProduto extends ControladorBasico implements IControladorProdutos {
	
	private IRepositorioProduto repositorioProduto;
	private static ControladorProduto instance;

	private ControladorProduto() {
		super();
		repositorioProduto = (IRepositorioProduto) RepositorioProduto
				.getInstance();		
	}
	
	public static ControladorProduto getInstance() {
		if (instance == null) {
			instance = new ControladorProduto();
		}
		return instance;
	}
	
	@Override
	public Produto getProdutoById(int id) throws ControladorException {
		try {
			return repositorioProduto.getProdutoById(id);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public ArrayList<Produto> getAllProduto() throws ControladorException {
		try {
			return repositorioProduto.getAllProduto();
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void insertProduto(Produto produto) throws ControladorException {
		try {
			repositorioProduto.insertProduto(produto);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}		
	}

	@Override
	public void updateProduto(Produto produto) throws ControladorException {
		try {
			repositorioProduto.updateProduto(produto);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}	
	}

	@Override
	public void removeProduto(Produto produto) throws ControladorException {
		try {
			repositorioProduto.removeProduto(produto);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}	
	}

}
